# 写入操作  w
'''
步骤:
1.文件打开
    格式: open(文件路径,读写模式,指定编码集) 这个函数的返回值是一个file对象 写入模式是w
2.写入数据
    格式:
        文件对象.write(要写入的内容)
        文件对象.writelines(字符串列表)
3.文件关闭
    格式: 文件对象.close()  文件关闭后将不能继续操作文件对象

思考1: 以写入模式打开文件时,文件中原有的数据会被清空,那么是写入时清空的,还是打开时清空的呢?
一定要注意,文件是打开时被清空的,而不是写入时清空的.

思考2: 如果写入的文件不存在会创建还是报错呢?
在w模式下,被打开的文件不存在则会创建一个该名称的文件.

思考3: 如果我们不使用encoding, 默认的编码格式是什么?
在windows中如果不书写编码集,则默认使用gbk格式编码,所以我们默认在windows下开发时,一定会书写编码集,无论读写
'''

# 1. 文件打开
# file  = open('2.txt', 'w')
# 在windows下开发时,一定会书写编码集,无论读写
file = open('2.txt', 'w', encoding='utf8')

# 2. 写入数据
# io.UnsupportedOperation: not readable w模式下无法读取数据(同时 r 模式下也不能写入数据)
# print(file.read())

# 方式一: write()
file.write('传智')

# 方式二: writelines 这种写入方式几乎不用,用的时候也是配合readlines去写入, 传参格式与readlines输出格式一致
# 传参格式: ['床前明月光,\n','疑是地上霜.\n','举头望明月,\n','低头思故乡.\n']
str_lists = ['床前明月光,\n', '疑是地上霜.\n', '举头望明月,\n', '低头思故乡.\n']
file.writelines(str_lists)

# 3. 文件关闭
file.close()

# 已经被关闭的文件是不可以操作的.
# ValueError: I/O operation on closed file.
file.write('文件关闭')

